//package com.zmn.plat.dubbo.interfaces.channel;
//
//import java.util.List;
//
//import javax.validation.Valid;
//import javax.validation.constraints.*;
//
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.plat.common.dto.area.AreaSimpleDRO;
//import com.zmn.plat.common.dto.channel.*;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
///**
// * 新渠道远程服务接口
// *
// * @author xiangjunming
// * @since 2019/08/29 17:41:11
// */
//@Api(value = "渠道服务", tags = {"渠道"})
//public interface ChannelListRemoteService {
//    /**
//     * 获取结算信息
//     *
//     * @param channelId the channel id
//     * @return the settle by channel id
//     */
//    @ApiOperation(value = "获取结算信息", response = ResponseDTO.class, notes = "获取结算信息", tags = {"结算"})
//    ResponseDTO<ChannelSettleDRO> getSettleByChannelId(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 描述: 获取结算信息(资金账户使用)
//     *
//     * @param channelId 渠道id
//     * @return ResponseDTO<ChannelSettleErpDTO>
//     * @author guoqiao
//     * @since 2021/5/10 10:34
//     */
//    @ApiOperation(value = "获取结算信息", response = ResponseDTO.class)
//    ResponseDTO<ChannelSettleErpDRO> getSettleAccountByChannelId(@NotNull(message = "channelId不能为空")
//                                                                 @Positive(message = "channelId必须为大于0的正整数")
//                                                                 @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 获取渠道押金(单位：分)
//     *
//     * @param channelId the channel id
//     * @return the deposit by id
//     */
//    @ApiOperation(value = "获取渠道押金", response = ResponseDTO.class, notes = "获取渠道押金", tags = {"押金"})
//    ResponseDTO<Integer> getDepositByChannelId(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 获取渠道保证金(单位：分)
//     *
//     * @param channelId the channel id
//     * @return the bail by id
//     */
//    @ApiOperation(value = "获取渠道保证金", response = ResponseDTO.class, notes = "获取渠道保证金", tags = {"保证金"})
//    ResponseDTO<Integer> getBailByChannelId(@NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 描述: 查询渠道佣金信息
//     *
//     * @param channelId   渠道ID
//     * @param servCategId 服务分类ID
//     * @param plat        平台
//     * @return ResponseDTO<ChannelProductDRO>
//     * @auther: tanghongjun
//     * @since: 2018/11/8 14:30
//     */
//    @ApiOperation(value = "查询渠道佣金信息", response = ResponseDTO.class, notes = "查询渠道佣金信息", tags = {"佣金"})
//    ResponseDTO<ChannelProductDRO> getByServIdAndChannelId(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId,
//                                                           @ApiParam(value = "平台" ) Integer plat, @NotNull(message = "servCategId不能为空" ) @Positive(message = "servCategId必须为大于0的正整数" ) @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//    /**
//     * 获取渠道信息
//     *
//     * @param channelId the channel id
//     * @return response dto
//     */
//    @ApiOperation(value = "获取渠道信息", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<ChannelDRO> getByChannelId(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 批量获取渠道信息
//     *
//     * @param channelIds the channel ids
//     * @return response dto
//     */
//    @ApiOperation(value = "获取渠道信息", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<ChannelDRO>> listByChannelIds(List<Integer> channelIds);
//
//    /**
//     * 根据公司ID查询渠道信息
//     *
//     * @param companyId the company id
//     * @return response dto
//     */
//    @ApiOperation(value = "获取渠道信息", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<ChannelDRO>> listByCompanyId(@NotNull(message = "companyId不能为空" ) @Positive(message = "companyId必须为大于0的正整数" ) @ApiParam(value = "公司ID", required = true) Integer companyId);
//
//    /**
//     * 根据渠道别名模糊匹配渠道信息
//     *
//     * @param anotherName 渠道别名 必传
//     * @return VtDTO(channelId, channelAnotherName, status)
//     */
//    @ApiOperation(value = "获取渠道信息", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<VtDTO>> listVtByChannelAnotherName(@NotNull(message = "anotherName不能为空" )
//                                                        @ApiParam(value = "渠道别名", required = true) String anotherName);
//
//    /**
//     * 描述: 根据父级渠道id集合获取渠道VT结构
//     *
//     * @param parentIds 父级渠道id集合
//     * @param status    状态
//     * @return com.zmn.common.dto.VtDTO
//     * @author guoqiao
//     * @since 2021/6/22 17:28
//     */
//    ResponseDTO<List<VtDTO>> listVtByParentIds(@NotEmpty(message = "list参数不能为空")
//                                               @ApiParam(value = "父级渠道id集合", required = true) List<Integer> parentIds,
//                                               @ApiParam(value = "状态", required = true) Integer status);
//
//    /**
//     * 根据条件查询渠道
//     *
//     * @param channelDIO the channel dio
//     * @return the response dto
//     */
//    @ApiOperation(value = "获取渠道信息", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<ChannelDRO>> listByDIO(@NotNull(message = "入参不能为空" ) @Valid @ApiParam(value = "入参", required = true) ChannelDIO channelDIO);
//
//    /**
//     * 本次相关的一级渠道及其下级渠道数量 mcc专用
//     *
//     * @param channelIds 渠道id
//     * @param status     状态
//     * @return the response dto
//     */
//    @ApiOperation(value = "本次相关的一级渠道及其下级渠道数量", response = ResponseDTO.class, notes = "本次相关的一级渠道及其下级渠道数量", tags = {"本次相关的一级渠道及其下级渠道数量"})
//    ResponseDTO<List<ChannelCountDRO>> listCountByStatusAndChannelIdsGroupByParentId(
//            @NotEmpty(message = "channelIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1,
//                    max = DubboConsts.MAX_PARAM_LENGTH, message = "channelIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "渠道ID集合", required = true) List<Integer> channelIds,
//            @NotNull(message = "status不能为空" ) @Positive(message = "status必须为大于0的正整数" ) @ApiParam(value = "状态", required = true) Integer status);
//
//    /**
//     * 根据订单配置参数以及渠道基本信息查询渠道信息
//     *
//     * @param channelOrderConfigDIO
//     * @return the response dto
//     */
//    @ApiOperation(value = "根据渠道订单配置及渠道基本信息获取渠道信息", response = ResponseDTO.class, notes = "根据渠道订单配置及渠道基本信息获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<ChannelSimpleDRO>> listByChannelOrderConfigDIO(@NotNull(message = "入参不能为空" ) @Valid @ApiParam(value = "入参", required = true) ChannelOrderConfigDIO channelOrderConfigDIO);
//
//    /**
//     * 根据是否允许贴花和渠道层级获取渠道信息
//     *
//     * @param applique 是否允许贴花 1不允许 2允许
//     * @param rank     渠道层级 1一级 2二级
//     * @return
//     */
//    @ApiOperation(value = "根据是否允许贴花和渠道层级获取渠道信息", response = ResponseDTO.class, notes = "根据是否允许贴花和渠道层级获取渠道信息", tags = {"渠道基本信息"})
//    ResponseDTO<List<VtDTO>> listVtByAppliqueAndRank(@NotNull(message = "applique不能为空" ) @Positive(message = "applique必须为大于0的正整数" ) @ApiParam(value = "是否允许贴花", required = true) Integer applique,
//                                                     @NotNull(message = "rank不能为空" ) @Positive(message = "rank必须为大于0的正整数" ) @ApiParam(value = "渠道层级", required = true) Integer rank);
//
//    /**
//     * 通过渠道ID获取服务区域下开通的城市,以及城市对应的省份信息
//     *
//     * @param channelId 渠道ID
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID获取服务区域下开通的城市", response = ResponseDTO.class, tags = {"渠道ID"})
//    ResponseDTO<List<AreaSimpleDRO>> listAreaByChannelId(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道id", required = true) Integer channelId);
//
//    /**
//     * 描述: 根据渠道id，城市id，产品id，检查是否开通服务
//     *
//     * @param channelId 渠道ID
//     * @param cityId    城市ID
//     * @param productId 产品ID
//     * @return java.lang.Boolean
//     * @author guoqiao
//     * @since 2021/5/31 16:05
//     */
//    @ApiOperation(value = "根据渠道id，城市id，产品id，检查是否开通服务", response = ResponseDTO.class)
//    ResponseDTO<Boolean> checkOpenServ(@NotNull(message = "channelId不能为空") @ApiParam(value = "渠道id", required = true) Integer channelId,
//                                       @NotNull(message = "cityId不能为空") @ApiParam(value = "城市id", required = true) Integer cityId,
//                                       @NotNull(message = "productId不能为空") @ApiParam(value = "产品ID", required = true) Integer productId);
//
//    /**
//     * 根据条件分页查询渠道
//     *
//     * @param channelDIO the channel dio
//     * @return the response dto
//     */
//    @ApiOperation(value = "根据条件分页查询渠道", response = ResponseDTO.class, notes = "获取渠道信息", tags = {"分页"})
//    ResponseDTO<ChannelListPageDRO> listPageByDIO(@NotNull(message = "入参不能为空" ) @Valid @ApiParam(value = "入参", required = true) ChannelDIO channelDIO);
//
//    /**
//     * 查询全部渠道
//     *
//     * @return the response dto
//     */
//    @ApiOperation(value = "查询全部渠道", response = ResponseDTO.class, notes = "全部渠道", tags = {"全部渠道"})
//    ResponseDTO<List<ChannelDRO>> listAll();
//
//    /**
//     * 查询二级渠道
//     *
//     * @param plat        可传参数
//     * @param channelType 可传参数
//     * @return the list
//     */
//    @ApiOperation(value = "查询二级渠道", response = ResponseDTO.class, notes = "二级渠道", tags = {"二级渠道"})
//    @Deprecated
//    ResponseDTO<List<ChannelDRO>> listTwoLevelChannel(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer channelType);
//
//    /**
//     * 查询二级渠道
//     *
//     * @param plat        可传参数
//     * @param channelType 可传参数
//     * @return the list
//     */
//    @ApiOperation(value = "查询二级渠道", response = ResponseDTO.class, notes = "二级渠道", tags = {"二级渠道"})
//    ResponseDTO<List<VtDTO>> listTwoLevelChannelVtByPlatAndChannelType(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer channelType);
//
//    /**
//     * 获取所有非啄金客类型的二级渠道
//     *
//     * @param plat        可传参数
//     * @param channelType 可传参数
//     * @return the list
//     */
//    @ApiOperation(value = "获取所有非啄金客类型的二级渠道", response = ResponseDTO.class, notes = "非啄金客类型", tags = {"非啄金客类型"})
//    ResponseDTO<List<ChannelDRO>> listChannelByNotCps(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer channelType);
//
//    /**
//     * 根据父ID查询渠道
//     *
//     * @param parentId the parent id
//     * @return the list
//     */
//    @ApiOperation(value = "根据父ID查询渠道", response = ResponseDTO.class, notes = "根据父ID查询渠道", tags = {"父Id"})
//    ResponseDTO<List<ChannelDRO>> listByParentId(@NotNull(message = "parentId不能为空" ) @Positive(message = "parentId必须为大于0的正整数" ) @ApiParam(value = "渠道父级id", required = true) Integer parentId);
//
////    /**
////     * 根据渠道ID查询平台类型线上/线下
////     *
////     * @param channelIds
////     *            the channel ids
////     * @return the response dto
////     */
////    @ApiOperation(value = "根据渠道ID查询平台类型线上/线下", response = ResponseDTO.class, notes = "线上/线下", tags = {"线上/线下"})
////    ResponseDTO<List<ChannelPlatformTypeDRO>> listPlatformTypeByChannelIds(@NotEmpty(message = "channelIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1,
////        max = DubboConsts.MAX_PARAM_LENGTH, message = "channelIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "渠道ID集合", required = true) List<Integer> channelIds);
//
//    /**
//     * 获取所有渠道结算信息
//     *
//     * @return the response dto
//     */
//    @ApiOperation(value = "获取结算信息", response = ResponseDTO.class, notes = "获取结算信息", tags = {"结算"})
//    ResponseDTO<List<ChannelSettleDRO>> listSettleAll();
//
//    /**
//     * 根据渠道ID查询是否需要通知工程师（工单超时预警后）
//     *
//     * @param channelId 渠道ID
//     * @return true需要通知  false不需要通知
//     */
//    @ApiOperation(value = "是否通知工程师", response = ResponseDTO.class, notes = "是否通知工程师", tags = {"渠道订单配置"})
//    ResponseDTO<Boolean> checkNotifyEngineer(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 根据渠道ID查询是否需要透传订单价格
//     *
//     * @param channelId 渠道ID
//     * @return true允许  false不允许
//     */
//    @ApiOperation(value = "是否需要透传订单价格", response = ResponseDTO.class, notes = "是否需要透传订单价格", tags = {"渠道订单配置"})
//    ResponseDTO<Boolean> checkShowOrderPrice(@NotNull(message = "channelId不能为空" ) @Positive(message = "channelId必须为大于0的正整数" ) @ApiParam(value = "渠道ID", required = true) Integer channelId);
//
//    /**
//     * 获取所有非啄金客类型的二级渠道的渠道结算信息
//     *
//     * @return the response dto
//     */
//    @ApiOperation(value = "获取所有非啄金客类型的二级渠道的渠道结算信息", response = ResponseDTO.class, notes = "非啄金客类型", tags = {"非啄金客类型"})
//    ResponseDTO<List<ChannelSettleDRO>> listSettleByNotCps();
//
//    /**
//     * 搜索渠道
//     *
//     * @param plat     平台标识，1言而有信，2啄木鸟，3一步维修，4川南环保，null不限
//     * @param type     渠道类型，1政企渠道，2平台渠道，3厂家渠道，4自有渠道，5推广渠道，6服务商渠道，7啄金客渠道，null不限
//     * @param centId   一级部门，null不限
//     * @param deptId   二级部门，null不限
//     * @param parentId 1级渠道Id，null不限
//     * @param status   状态，1禁用，2启用，null不限
//     * @return 渠道Id、渠道名称和状态字段列表
//     */
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status,
//                                           @NotNull(message = "数据权限标志不能为空" ) @ApiParam(value = "数据权限标志" ) Boolean limitPermit);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "员工id" ) Integer staffId);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "关键字" ) String keyword);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "关键字" ) String keyword,
//                                           @NotNull(message = "数据权限标志不能为空" ) @ApiParam(value = "数据权限标志" ) Boolean limitPermit);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "关键字" ) String keyword,
//                                           @ApiParam(value = "员工id" ) Integer staffId);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "关键字" ) String keyword,
//                                           @NotNull(message = "数据权限标志不能为空" ) @ApiParam(value = "数据权限标志" ) Boolean limitPermit, @ApiParam(value = "获得名称" ) Boolean firstGetAnotherName);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@ApiParam(value = "平台" ) Integer plat, @ApiParam(value = "渠道类型" ) Integer type, @ApiParam(value = "一级部门" ) Integer centId,
//                                           @ApiParam(value = "二级部门" ) Integer deptId, @ApiParam(value = "1级渠道Id" ) Integer parentId, @ApiParam(value = "状态" ) Integer status, @ApiParam(value = "关键字" ) String keyword,
//                                           @ApiParam(value = "员工id" ) Integer staffId, @ApiParam(value = "获得名称" ) Boolean firstGetAnotherName);
//
//    @ApiOperation(value = "搜索渠道", response = ResponseDTO.class, notes = "搜索渠道", tags = {"渠道"})
//    ResponseDTO<List> listChannelVtByQuery(@NotNull(message = "入参不能为空" ) @Valid @ApiParam(value = "渠道接口入参", required = true) ChannelSearchDIO channelSearchDIO, @ApiParam(value = "关键字" ) String keyword,
//                                           @NotNull(message = "数据权限标志不能为空" ) @ApiParam(value = "数据权限标志" ) Boolean limitPermit);
//
//    // /**
//    // * 根据 OMS 固定的100多个渠道对员工进行过滤
//    // *
//    // * @param staffId 员工ID
//    // * @return 过滤后的数据
//    // */
//    // ResponseDTO<List<VtDTO>> listOMSChannelVtByStaffId(Integer staffId);
//
//}
